package edu.upc.metodos;

import java.util.ArrayList;

import edu.upc.entidades.Cuota;

public class MetodosCuota {
	
	MetodosGlobales globales;

	private ArrayList<Cuota> cuotas;

	public MetodosCuota() {
		cuotas = new ArrayList<Cuota>();
	}

	public ArrayList<Cuota> getCuotas() {
		return cuotas;
	}

	public void registrarCuota(int viv_numero, String cut_periodo,
			double cut_imp, String cut_fecvencm, String cut_estado,
			String cut_fechaPago, String cut_tipoPago) {
		int contador = 0;

		Cuota datosCuota = new Cuota(viv_numero, cut_periodo, cut_imp,
				cut_fecvencm, cut_estado,cut_fechaPago,cut_tipoPago);

		for (Cuota cuotasArreglo : cuotas) {
			if (cuotasArreglo.getVivienda() == viv_numero
					&& cuotasArreglo.getPeriodo().equals(cut_periodo)) {
				contador = 1;
				break;
			}
		}
		if (contador == 0) {
			cuotas.add(datosCuota);
			System.out
					.println("La cuota ha sido ingresada");
		} else {
			System.out
					.println("Ya se registro una Cuota con la misma vivienda y periodo");
		}
	}
	
	public ArrayList<Cuota> obtenerPendientes(int vivienda){
		
		 ArrayList<Cuota> list = new ArrayList<Cuota>();
		 
		for (Cuota cuotaArray : cuotas) {

			if (cuotaArray.getVivienda()==vivienda && cuotaArray.getEstado().equals("No Pagado")) {

				list.add(cuotaArray) ;

			}
		}

		return list;
	}
	
	public ArrayList<Cuota> obtenerVencidosXVivienda(int vivienda){
		
			
		 ArrayList<Cuota> list = new ArrayList<Cuota>();
		 
		for (Cuota cuotaArray : cuotas) {
			
			int morosos = globales.StringToDate(cuotaArray.getFechaVenc()).compareTo(globales.StringToDate(globales.FechaActual()));
			
			if (cuotaArray.getVivienda() == vivienda && cuotaArray.getEstado().equals("No Pagado") && morosos<0) 
					{
		
						list.add(cuotaArray) ;

			}
		}

		return list;
	}
	
	
	public ArrayList<Cuota> listarCuotaPorFechas(String inicio, String Fin){
		
		ArrayList<Cuota> listado = new ArrayList<Cuota>();
		
		for (Cuota cuotaArray : cuotas) {
			
			if (globales.StringToDate(cuotaArray.getFechaVenc()).compareTo(globales.StringToDate(inicio)) > 0 && 
					globales.StringToDate(cuotaArray.getFechaVenc()).compareTo(globales.StringToDate(Fin)) < 0){
				listado.add(cuotaArray) ;				
			}
					
	}
		return listado;
	}
	
	public ArrayList<Cuota> obtenerVencidosCondominio(){
		
		ArrayList<Cuota> list = new ArrayList<Cuota>();
		 
		for (Cuota cuotaArray : cuotas) {
			
			int morosos = globales.StringToDate(cuotaArray.getFechaVenc()).compareTo(globales.StringToDate(globales.FechaActual()));
			
			if (cuotaArray.getEstado().equals("No Pagado") && morosos<0) 
					{
		
						list.add(cuotaArray) ;

			}
		}

		return list;
	}
	
	public Cuota obtenerCuota(int num_viv, String cut_periodo) {

		Cuota cuotaObtenida = null;

		for (Cuota cuotaArray : cuotas) {

			if (cuotaArray.getVivienda()==num_viv && cuotaArray.getPeriodo().equals(cut_periodo)) {

				cuotaObtenida = cuotaArray;

			}
		}

		return cuotaObtenida;
	}

}
